package com.hbzhit.common.extension;

import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hbzhit.common.entity.BaseEntity;
import com.hbzhit.common.utils.PageUtils;
import org.springframework.core.io.InputStreamSource;
import org.springframework.http.ResponseEntity;

import java.io.IOException;
import java.util.List;
import java.util.Map;


/**
 * Service基类
 * @author DING
 * @date 2021/4/6 15:54
 * @version 1.0
 **/
public interface IBaseService<T extends BaseEntity> extends IService<T> {

    /**
     * 查询分页列表
     * @param params 查询参数
     * @return 分页数据
     */
    PageUtils<T> page(Map<String, Object> params);

    /**
     * 查询列表
     * @param params 查询参数
     * @return 数据
     */
    List<T> list(Map<String, Object> params);

    /**
     * 导出列表
     * @param params 查询参数
     * @return 响应数据对象
     * @throws IOException 文件流异常
     */
    ResponseEntity<byte[]> exportExcel(Map<String, Object> params) throws IOException;

    /**
     * 批量导入
     * @param source 文件流
     * @return 导入结果
     * @throws Exception 异常
     */
    ExcelImportResult<T> importExcel(InputStreamSource source) throws Exception;
}

